/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.vista.implementaciones;

import desarrollosoft.ghce.entidades.Paciente;
import desarrollosoft.ghce.vista.interfaces.Actualizable;
import desarrollosoft.ghce.vista.interfaces.Cambiable;
import java.util.HashMap;
import java.util.Map;
import org.zkoss.zk.ui.Execution;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Tabbox;
import org.zkoss.zul.Tabpanel;
import org.zkoss.zul.Window;

/**
 *
 * @author ariel
 */
public class ControladoraHistorial extends SelectorComposer<Window> implements Actualizable {
    
    private Cambiable cambiable;
    
    private Paciente pacienteElegido;
    
    @Wire
    private Tabbox tabboxPaneles;
    
    @Wire
    private Tabpanel tabpanelConsultar;
    
    @Wire
    private Tabpanel tabpanelCrear;
    
    private Window ventanaConsultarHistorial;
    
    @Override
    public void doAfterCompose(Window comp) throws Exception {
        hacerAntesDeDibujar();
        super.doAfterCompose(comp);
        hacerDespuesDeDibujar();
    }
    
    private void hacerAntesDeDibujar() {
        Execution ejecucion = Executions.getCurrent();
        cambiable = (Cambiable) ejecucion.getArg().get("controladoraPrincipal");
        pacienteElegido = (Paciente) ejecucion.getArg().get("pacienteElegido");
    }
    
    private void hacerDespuesDeDibujar() {
        tabpanelConsultar.appendChild(crearVentanaConsultar());
        tabpanelCrear.appendChild(crearVentanaCrear());
    }
    
    private Window crearVentanaConsultar() {
        Map<String,Object> argumentos = new HashMap<>();
        argumentos.put("controladoraPrincipal", cambiable);
        argumentos.put("pacienteElegido", pacienteElegido);
        ventanaConsultarHistorial = (Window) Executions.createComponents("ConsultarHistorial.zul", null, argumentos);
        return ventanaConsultarHistorial;
    }
    
    private Window crearVentanaCrear() {
        Map<String,Object> argumentos = new HashMap<>();
        argumentos.put("controladoraPrincipal", cambiable);
        argumentos.put("pacienteElegido", pacienteElegido);
        argumentos.put("actualizable", this);
        return (Window) Executions.createComponents("CrearElemento.zul", null, argumentos);
    }

    @Override
    public void guardaronVentanaHija(Object objetoActualizado) {
        // solo es llamado cuando guardan en CrearElemento.zul
        tabpanelConsultar.removeChild(ventanaConsultarHistorial); // borro la pantalla de consultas
        tabpanelConsultar.appendChild(crearVentanaConsultar()); // la creo y agrego de agrego de nuevo, para forzar a que actualice
        tabboxPaneles.setSelectedPanel(tabpanelConsultar); // seteo como seleccionado el panel de consultar
    }

    @Override
    public void cancelaron() {
        // no hace nada
    }
}
